#define _CRT_SECURE_NO_WARNINGS  1
#pragma warning(disable:6031)
#include"stack.h"

namespace bit {
	void STInit(ST* ps, STDataType n) {
		assert(ps);
		ps->a = (STDataType*)malloc(n * sizeof(STDataType));
		ps->top = 0;
		ps->capacity = n;
	}
	void STPush(ST* ps, STDataType x) {
		assert(ps);
		if (ps->top == ps->capacity) {
			cout << "add capacity" << endl;
			int newcapacity = ps->capacity == 0 ? 4 : ps->capacity*2;
			STDataType* tmp = (STDataType*)realloc(ps->a, newcapacity * sizeof(STDataType));
			if (tmp == NULL) {
				perror("realloc fail");
				return;
			}
			ps->a = tmp;
			ps->capacity = newcapacity;
		}
		ps->a[ps->top]=x;
		ps->top++;
	}
}

//namespace bit {
//	namespace pg {
//		int rand = 1;
//		int add(int l, int r) {
//			return l + r;
//		}
//	}
//	namespace hg {
//		int rand = 2;
//		int add(int l, int r) {
//			return l + r;
//		}
//	}
//
//}
//
//int main() {
//	cout << bit::pg::rand << endl;
//	cout << bit::hg::rand << endl;
//	cout << bit::pg::add(1, 2) << endl;
//	cout << bit::hg::add(1, 2) << endl;
//	return 0;
//}

//namespace bit {
//	int rand = 10;
//	int add(int l, int r) {
//		return l + r;
//	}
//	struct Node {
//		struct Node* next;
//		int val;
//	};
//}
//
//int main() {
//	cout << rand << endl;
//	cout << bit::rand;
//	return 0;
//}

//int main() {
//	int rand = 10;
//	cout << rand << endl;
//	return 0;
//}
//int main() {
//	cout << sizeof(bool) << endl;
//	return 0;
//}

//int main() {
//	int* ptr = nullptr;
//	cout << ptr << endl;
//	return 0;
//}